题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解法
对于全部字符扫描,创建一个StringBuilder,字符不是空格就append(),是空格就append(%20);
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public static StringBuffer replaceSpace(StringBuffer str) { String a = String.valueOf(str); char [] test = a.toCharArray(); StringBuffer b = new StringBuffer(); for (int i = 0 ; i<test.length;i++) { if (test[i]==' ') { b.append("%20"); } else b.append(test[i]); } return b; } public static StringBuilder replaceSpace1(StringBuffer str) { StringBuilder b= new StringBuilder(); for (int i = 0 ; i<str.length();i++) { if (str.charAt(i)==' ') { b.append('%'); b.append('2'); b.append('0'); } else b.append(str.charAt(i)); } return b; }
|
收获
StringBuffer 线程同步,速度略低
StringBuilder 线程不同步,速度快
字符串常考,所以基本的操作最好熟悉;
比如说append(),我自己敲代码根本不知道,String没有这个方法,因为String不可变;
String 不可变,所以算法题不知道用的多吗? 但是处理较少的字符串,String还是可以用的;
String家族有个charAt()方法,负责提取目标位置的字符
1 2
| String b = "hello world"; System.out.println(b.charAt(4));
|